Matthias Klose [Thu, 5 Mar 2026 11:22:39 +0000 (12:22 +0100)]
pr106641
# DP: Fix PR demangler/106641, taken from the trunk.
# DP: Fix PR demangler/106641, taken from the trunk.
libiberty: fix resource exhaustion in rust demangler (PR demangler/106641)
demangle_binder() parses the bound_lifetimes count as a base-62
integer with no upper bound. A crafted symbol can encode a huge
lifetime count in very few bytes, causing OOM or CPU hang.
Cap bound_lifetimes at 1024 and check rdm->errored in the loop
so it bails out early on errors during iteration.
libiberty/ChangeLog:
PR demangler/106641
* rust-demangle.c (demangle_binder): Reject bound_lifetimes
above 1024 to prevent resource exhaustion from crafted symbols.
Add rdm->errored check in the loop condition.
* testsuite/rust-demangle-expected: Add regression test.
Matthias Klose [Thu, 5 Mar 2026 11:22:39 +0000 (12:22 +0100)]
armhf-64k-alignment
The upstream binutils commit below reduced the section alignment of
armhf executables (including shared libraries) from 64k to 4k, on the
basis that the additional bloat is not justified, given that arm64 hosts
running 64k pagesize kernels with armhf user space are not used in
practice.
However, the situation is slightly different today on Debian, where a
16k pagesize kernel is provided that enables compat support, and is
therefore able to execute armhf user space. The only impediment is the
fact that armhf binaries are no longer compatible with this, due to the
change below.
To accommodate this use case, revert the patch. This makes the generated
executables compatible with compat mode on arm64 systems running 16k
kernels.